# 大麦网
# 1. 自动登录

# 2. 抢票操作

from selenium import webdriver
import os
import time
import pickle # 读取cookie

# 大麦网
damai_url = "https://www.damai.cn/"
# 大麦网——登录页面
login_url = "https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F"
# 大麦网_抢票页面
target_url = "https://detail.damai.cn/item.htm?spm=a2oeg.home.card_0.ditem_1.591b23e1nTqiiK&id=727742590303"

class Concert:
    """初始化加载"""
    def __init__(self):
        self.status = 0 # 表示当前操作到了哪一步
        self.login_method = 1 # {0: 模拟登录， 1: cookie登录}
        # 代码通过 调用浏览器驱动 去初始化浏览器
        self.driver = webdriver.Chrome() # 初始化浏览器

    """设置cookies： 专门用于记录网页用户信息"""
    def set_cookies(self):
        self.driver.get(login_url)
        print("### 请扫码登录 ###")
        time.sleep(10)
        print('### 登录成功 ###')
        pickle.dump(self.driver.get_cookies(), open('cookies.pkl','wb'))
        print("###保存成功###")
        # 抢票
        self.driver.get(target_url)

    """获取cookies"""
    def get_cookie(self):
        cookies = pickle.load(open('cookies.pkl','rb'))
        for cookie in cookies:
            # print(cookie)
            cookie_dict = {
                'domain': '.damai.cn',
                'name': cookie.get('name'),
                'value': cookie.get('value'),
            }
            self.driver.add_cookie(cookie_dict)
        print('### 载入cookies 成功 ###')

    """登录"""
    def login(self):
        # 如果为 0 则模拟登录
        if self.login_method == 0:
            # 登录
            self.driver.get(login_url)
        elif self.login_method == 1:
            # 如果当前目录下没有 cookie.pkl 文件
            if not os.path.exists('cookies.pkl'):

                # 登录一下 记录信息
                self.set_cookies()
            else:
                self.driver.get(target_url)
                self.driver.refresh()
                # 登录一下 通过 selenium 传入个人信息
                self.get_cookie()

    """打开浏览器"""
    def enter_concert(self):
        print('### 打开浏览器 ###')
        # 调用 login
        self.login()
        self.driver.refresh()
        self.status = 2
        print('### 登录成功 ###')


if __name__ == '__main__':
    con = Concert()
    con.enter_concert()


